// axios工具函数

// 引入axios
import axios from 'axios'
// 引入仓库
import store from '@/store'
// 引入this.$store.Message,element-ui的消息提示组件
import {Message} from 'element-ui'

// 封装公共地址和超时时间
const instance = axios.create({
  baseURL: 'http://sell.h5.itsource.cn:8087',
  timeout: 10000,
})

// 封装请求拦截器
instance.interceptors.request.use(
  // config 请求信息对象

  config => {
    const token = store.getters.token
    config.headers.Authorization = token
    return config
  },
  //   抛出错误信息
  err => {
    return Promise.reject(err)
  }
)

// 封装响应拦截器
instance.interceptors.response.use(
  response => {
    let {code, msg} = response.data

    if (code === 0) {
      Message.success(msg)
    }

    if (code === 1) {
      Message.error(msg)
    }
    if (code === 5001) {
      Message.error(msg)
    }
    return response
  },
  //   抛出错误信息
  err => {
    let {message, response} = err
    if (response) {
      switch (response.status) {
        case 401:
          Message.error(message)
          break
        case 403:
          Message.error(message)
          break
        case 404:
          Message.error(message)
          break
        case 500:
          Message.error(message)
          break
        default:
          Message.error(message)
          break
      }
    } else {
      Message.error(message)
    }
    return Promise.reject(err)
  }
)

// 导出
export default instance
